export {}

// 泛型别名- 泛型在type上的使用

// 通过接口返回数据来演示

// 用户信息返回数据

// type UserResponse = {
//   msg: string
//   code: number
//   data: {
//     name: string
//     age: number
//   }
// }

// // 商品信息的接口返回数据
// type GoodsResponse = {
//   msg: string
//   code: number
//   data: {
//     price: number
//     name: string
//   }
// }

// 泛型别名如何使用

// 用户数据类型
type User = {
  name: string
  age: number
}

// 商品数据类型
type Goods = {
  price: number
  name: string
}

// 接口返回数据类型是不一样的,但是有一部分是一样的
// 结合着函数去思考对比  fun(形参) 形参传递的是数据  Response<类型参数> 类型参数传递的是类型
// <T>  T可以随意命名 叫Type也行  AAA也行 注意语义化
type Response<T> = {
  msg: string
  code: number
  data: T
}

// 定义类型别名使用一下

type UserResponse = Response<User>
// 就相当于下面
// type UserResponse = {
//   msg: string
//   code: number
//   data: {
//     name: string
//     age: number
//   }
// }

type GoodsResponse = Response<Goods>
// 相当于下面
// type GoodsResponse = {
//   msg: string
//   code: number
//   data: {
//     price: number
//     name: string
//   }
// }

// 具体使用

// 获取用户数据

let user: UserResponse = {
  msg: '用户信息',
  code: 200,
  data: {
    name: '洪云',
    age: 18
  }
}

// 获取商品数据

let goods: GoodsResponse = {
  msg: '商品信息',
  code: 304,
  data: {
    price: 100,
    name: '十全大补丸'
  }
}